package com.moliku.insurance.process.strategy;

import com.moliku.insurance.common.response.CommonInsureResult;
import com.moliku.insurance.model.dto.CancelInsureDTO;
import com.moliku.insurance.model.dto.DownloadInsureDTO;
import com.moliku.insurance.model.dto.insure.InsureDTO;

/**
 * 保险业务策略接口
 *
 * @author Mr.Liu
 * @since 2021/2/5
 */
public interface PolicyStrategy {

    /**
     * 投保
     *
     * @param request 投保信息
     * @return 投保结果
     */
    CommonInsureResult submitPolicy(InsureDTO request);

    /**
     * 退保
     *
     * @param request 退保信息
     * @return 退保结果
     */
    CommonInsureResult cancelPolicy(CancelInsureDTO request);

    /**
     * 下载保单
     * 将保单内容统一转换为字节流进行响应
     *
     * @param downloadInsure 请求参数
     * @return 内容字节流
     */
    CommonInsureResult downloadPolicy(DownloadInsureDTO downloadInsure);
}
